// pages/index/index.js
Page({

    /**
     * 页面的初始数据
     */
    data: {
      printers: [], // 打印机列表
      loading: true, // 是否显示加载中
      _ordersWatcher: null // 实时监听句柄 (我们将停止使用它)
    },
  
    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
      this.getPrinters();
    },
  
    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {
      // 每次进入页面都刷新打印机状态
      this.getPrinters();
    },

    /**
     * 页面卸载时关闭监听
     */
    onUnload: function () {
      // --- *** 修改：确保旧的 watch (如果存在) 被关闭 *** ---
      if (this.data._ordersWatcher) {
        try {
          this.data._ordersWatcher.close();
        } catch (e) {
          //
        }
        this.setData({ _ordersWatcher: null });
      }
    },
  
    /**
     * 获取打印机列表
     */
    // --- *** 修改：使用云函数获取列表 *** ---
    getPrinters: function () {
      this.setData({ loading: true });
      wx.cloud.callFunction({
        name: 'getuserprinters'
      }).then(res => {
        if (res.result.success) {
          this.setData({
            printers: res.result.data,
            loading: false
          });
        } else {
          // 处理调用失败
          console.error('获取打印机列表失败', res.result.message);
          this.setData({ loading: false });
          wx.showToast({
            title: '加载失败',
            icon: 'none'
          });
        }
      }).catch(err => {
        console.error('获取打印机列表失败', err);
        this.setData({
          loading: false
        });
        wx.showToast({
          title: '加载失败',
          icon: 'none'
        });
      });
    },

    /**
     * --- *** 移除：updateQueueCounts *** ---
     * (此逻辑已移至 getuserprinters 云函数)
     */

    /**
     * --- *** 移除：startOrdersWatch *** ---
     * (直接数据库 watch 是不安全的，已移除)
     * (我们将依靠 onShow 和下拉刷新来更新队列)
     */
  
    /**
     * 跳转到文件上传页面
     */
    goToUpload: function (event) {
      const printerId = event.currentTarget.dataset.id;
      const printerStatus = event.currentTarget.dataset.status;
  
      if (printerStatus !== '正常') {
        wx.showToast({
          title: '该打印机当前不可用',
          icon: 'none'
        });
        return;
      }
  
      wx.navigateTo({
        url: `/pages/upload/upload?printerId=${printerId}`,
      });
    },
  
    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {
      this.getPrinters();
      // --- *** 修改：移除 wx.stopPullDownRefresh() *** ---
      // (让 getPrinters 异步完成后在 .then 或 .catch 中停止刷新，体验更好)
      // (为了简化，您也可以保留它，但最佳实践是等待异步结束)
      // (为保持简洁，我们暂时保留原样，但在 getPrinters 中自动处理了 loading)
      wx.stopPullDownRefresh();
    },
  
    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {
      return {
        title: '自助打印预约系统，方便快捷！',
        path: '/pages/index/index'
      }
    }
  })